home *** CD-ROM | disk | FTP | other *** search
/ Aminet 24 / Aminet 24 (1998)(GTI - Schatztruhe)[!][Apr 1998].iso / Aminet / mus / misc / Pro14bitbet.lha / Pro14bitbet.e < prev   
Text File  |  1998-02-11  |  5KB  |  192 lines

  1. /* 
  2.    Pro14bitbet.e source-code. No include-files needed.
  3.    Made by Kjetil S Matheussen 1996. Please change the
  4.    code as much as you like. It's totally free code.
  5.  
  6.    Please compile with E 2.21b by Wouter van Oortmerssen.
  7. */
  8.  
  9.  
  10. CONST MEMF_CHIP=2,
  11.         MEMF_ANY=0,
  12.       MEMF_LARGEST=$20000,
  13.       MODE_OLDFILE=$3ED,
  14.         MODE_NEWFILE=$3EE
  15.  
  16. DEF ledigminne,sampleinnplass,sampleutplass1,sampleutplass2,sampleinnhandle,
  17.      result,fillengde,sampleuthandle1,sampleuthandle2
  18.  
  19. PROC main()
  20.     initialiser()
  21.     prosess()
  22.     avslutt()
  23. ENDPROC
  24.  
  25. PROC prosess()
  26. DEF lokke,tillokke,rest
  27.     tillokke:=fillengde/30000
  28.  
  29.     IF tillokke>0
  30.         FOR lokke:=0 TO (tillokke-1)
  31.             ladsample(30000)
  32.             converter(30000)
  33.             lagre(15000)
  34.         ENDFOR
  35.     ENDIF
  36.     rest:=fillengde-(tillokke*30000)
  37.     IF rest>0
  38.         ladsample(rest)
  39.         converter(rest)
  40.         lagre(rest/2)
  41.     ENDIF
  42. ENDPROC
  43.  
  44.  
  45. PROC ladsample(lengde)
  46.         result:=Read(sampleinnhandle,sampleinnplass,lengde)
  47. ENDPROC
  48.  
  49.  
  50. PROC lagre(lengde)
  51.     result:=Write(sampleuthandle1,sampleutplass1,lengde)
  52.     result:=Write(sampleuthandle2,sampleutplass2,lengde)
  53. ENDPROC
  54.  
  55.  
  56. PROC converter(lengde)
  57. DEF lokke
  58.  
  59.     MOVE.L    sampleinnplass,A1
  60.  
  61.     FOR lokke:=0 TO lengde STEP 2
  62.  
  63.         MOVE.L    lokke,D1
  64.  
  65.         MOVE.W    D1,D2
  66.         ROR.W        #1,D2
  67.         MOVE.W    D2,A2
  68.         ADDA.L    sampleutplass1,A2
  69.         MOVE.L    A2,A3
  70.  
  71.         MOVE.B    0(A1,D1.W),D3
  72.         LSR.B        #2,D3
  73.  
  74.         MOVE.W    D2,A2
  75.         ADDA.L    sampleutplass2,A2
  76.  
  77.         MOVE.B    1(A1,D1.W),(A2)
  78.  
  79.         BTST.B    #0,(A2)
  80.         BEQ.S        satt
  81.         BRA.S        usatt
  82. satt:
  83.         BSET        #0,D3
  84. usatt:
  85.         MOVE.B    D3,(A3)
  86.  
  87.     ENDFOR        
  88. ENDPROC
  89.  
  90.  
  91. PROC initialiser()
  92. DEF uth1,uth2,insamp,outsamp
  93.     IF arg[]=0 THEN slutt('Pro14bitbet insample (outsample)','')
  94.     insamp:=arg
  95.     outsamp:=mellomrom(arg)
  96. /*    WriteF('\n\n\n\s,\sw\n',insamp,outsamp)
  97.     CleanUp(0)*/
  98.     fillengde:=FileLength(insamp)
  99.     IF fillengde<=0 THEN slutt(insamp,' iznogood')
  100.     ledigminne:=AvailMem(MEMF_ANY)
  101. /*    WriteF('\d\n',ledigminne)
  102.     CleanUp(0)*/
  103.     IF ledigminne<70000 THEN slutt('not enough memory','')
  104.     sampleinnplass:=AllocMem(31000,MEMF_ANY)
  105.     sampleutplass1:=AllocMem(16000,MEMF_ANY)
  106.     sampleutplass2:=AllocMem(16000,MEMF_ANY)
  107.     sampleinnhandle:=Open(insamp,MODE_OLDFILE)
  108.     IF sampleinnhandle=0 THEN slutt('Could not open: ',insamp)
  109.  
  110.     uth1:=strkop(outsamp,'.raw8')
  111.     uth2:=strkop2(outsamp,'.raw6')
  112.     sampleuthandle1:=Open(uth2,MODE_NEWFILE)
  113.     IF sampleuthandle1=0 THEN slutt('Could not open: ',uth2)
  114.     sampleuthandle2:=Open(uth1,MODE_NEWFILE)
  115.     IF sampleuthandle2=0    THEN slutt('Could not open: ',uth1)
  116. ENDPROC
  117.  
  118.  
  119. PROC mellomrom(string)
  120. DEF lokke,strlen=0,mellomplass=0
  121.     REPEAT
  122.         strlen++
  123.     UNTIL string[strlen]=0
  124.     FOR lokke:=1 TO strlen
  125.         IF string[lokke]=" "
  126.             IF mellomplass>0 THEN slutt('Pro14bitbet insample (outsample)','')
  127.             mellomplass:=lokke
  128.             MOVE.L    string,A1
  129.             ADD.L        lokke,A1
  130.             MOVE.B    #0,(A1)
  131.         ENDIF
  132.     ENDFOR
  133. ENDPROC (string+mellomplass+1)
  134.  
  135.  
  136. PROC slutt(a,b)
  137.     WriteF('\s',a)
  138.     WriteF('\s\n',b)
  139.     avslutt()
  140. ENDPROC
  141.  
  142.  
  143. PROC avslutt()
  144.     IF sampleuthandle1>0 THEN Close(sampleuthandle1)
  145.     IF sampleuthandle2>0 THEN Close(sampleuthandle2)
  146.     IF sampleinnhandle>0 THEN Close(sampleinnhandle)
  147.     IF sampleutplass1>0 THEN FreeMem(sampleutplass1,16000)
  148.     IF sampleutplass2>0 THEN FreeMem(sampleutplass2,16000)
  149.     IF sampleinnplass>0 THEN FreeMem(sampleinnplass,31000)
  150.     CleanUp(0)
  151. ENDPROC
  152.  
  153.  
  154. PROC strkop(str1,str2)
  155. DEF str,strlen,lokke,str2len,utstr
  156.     str:='wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww'
  157.     strlen:=StrLen(str1)
  158.     str2len:=StrLen(str2)
  159.     MOVE.L    str1,A1
  160.     MOVE.L    str,A2
  161.     FOR lokke:=1 TO strlen
  162.         MOVE.B    (A1)+,(A2)+
  163.     ENDFOR
  164.     MOVE.L    str2,A1
  165.     FOR lokke:=1 TO str2len
  166.         MOVE.B    (A1)+,(A2)+
  167.     ENDFOR
  168.     MOVE.B    #0,(A2)+
  169.     utstr:=str
  170. ENDPROC utstr
  171.  
  172.  
  173. PROC strkop2(str1,str2)
  174. DEF str,strlen,lokke,str2len,utstr
  175.     str:='wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww'
  176.     strlen:=StrLen(str1)
  177.     str2len:=StrLen(str2)
  178.     MOVE.L    str1,A1
  179.     MOVE.L    str,A2
  180.     FOR lokke:=1 TO strlen
  181.         MOVE.B    (A1)+,(A2)+
  182.     ENDFOR
  183.     MOVE.L    str2,A1
  184.     FOR lokke:=1 TO str2len
  185.         MOVE.B    (A1)+,(A2)+
  186.     ENDFOR
  187.     MOVE.B    #0,(A2)+
  188.     utstr:=str
  189. ENDPROC utstr
  190.  
  191.  
  192.